package com.ck.dao;

import com.ck.model.common.DeviceProgram;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 节目下载
 *
 * @author linqiang
 * @date 2018-06-20 18:21
 */
public interface DeviceProgramMapper {

    /**
     * 删除节目下载
     *
     * @param programId   节目下载主键
     * @param companyCode 商家编号
     * @return 影响行数
     */
    int deleteByPrimaryKey(@Param("programId") Long programId, @Param("companyCode") String companyCode);

    /**
     * 新增节目下载
     *
     * @param record 新增的节目下载
     * @return 影响行数
     */
    int insert(DeviceProgram record);

    /**
     * 新增节目下载（字段值不为空的）
     *
     * @param record 新增的节目下载
     * @return 影响行数
     */
    int insertSelective(DeviceProgram record);

    /**
     * 根据主键查询节目下载
     *
     * @param programId 节目下载主键
     * @return Program
     */
    DeviceProgram selectByPrimaryKey(Long programId);

    /**
     * 根据主键个更新节目下载（不为空的字段）
     *
     * @param record 更新的节目下载
     * @return 影响行数
     */
    int updateByPrimaryKeySelective(DeviceProgram record);

    /**
     * 根据主键更新节目下载
     *
     * @param record 更新的节目下载
     * @return 影响行数
     */
    int updateByPrimaryKey(DeviceProgram record);

    /**
     * 根据节目版本号删除终端节目关联
     *
     * @param programVersion 节目版本号
     * @param deleteTime     时间
     * @return 影响行数
     */
    int deleteByProgramVersion(@Param("programVersion") String programVersion, @Param("deleteTime") long deleteTime);

    /**
     * 批量插入终端节目
     *
     * @param deviceProgramList 插入的数据集合
     * @return 插入成功条数
     */
    int batchInsert(@Param("deviceProgramList") List<DeviceProgram> deviceProgramList);

    /**
     * 批量删除节目的终端
     *
     * @param programVersion 节目版本号
     * @param deviceCodeArr  终端code数组
     * @param deleteTime     删除时间
     */
    void batchDeleteDeviceFromProgram(@Param("programVersion") String programVersion,
                                      @Param("deviceCodeArr") String[] deviceCodeArr,
                                      @Param("deleteTime") Long deleteTime);

    /**
     * 批量从终端删除节目
     *
     * @param programVersionArr 节目版本号
     * @param deviceCode        终端
     */
    void batchDeleteProgramFromDevice(@Param("programVersionArr") String[] programVersionArr, @Param("deviceCode") String deviceCode);
}